SQL存储过程分页与游标使用 您所在的位置:网站首页 游标分页 oracle SQL存储过程分页与游标使用

SQL存储过程分页与游标使用

2023-10-03 12:20| 来源: 网络整理| 查看: 265

存储过程: CREATE procedure p_splitpage    @sql nvarchar(4000), --要执行的sql语句  @page int=1,    --要显示的页码 @pageSize int,  --每页的大小 @pageCount int=0 out, --总页数 @recordCount int=0 out --总记录数  as set nocount on declare @p1 int exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@pagecount output set @recordCount = @pageCount select @pagecount=ceiling(1.0*@pagecount/@pagesize) ,@page=(@page-1)*@pagesize+1 exec sp_cursorfetch @p1,16,@page,@pagesize  exec sp_cursorclose @p1 GO ASP页面的内容:  sql = "Select id, c_s_name from tabNews where deleted1 Order By id Desc" page = cint(page_get) if page_post""then page = cint(page_post) end if if not page > 0 then  page = 1 end if pagesize=20’每页的条数  set cmd = server.CreateObject("adodb.command") cmd.ActiveConnection = conn cmd.CommandType = 4 cmd.CommandText = "p_SplitPage" cmd.Parameters.Append cmd.CreateParameter("@sql",8,1, 4000, sql) cmd.Parameters.Append cmd.CreateParameter("@page",4,1, 4, page) cmd.Parameters.Append cmd.CreateParameter("@pageSize",4,1, 4, pageSize) cmd.Parameters.Append cmd.CreateParameter("@pageCount",4,2, 4, pageCount) cmd.Parameters.Append cmd.CreateParameter("@recordCount",4,2, 4, recordCount) set rs = cmd.Execute set rs = rs.NextRecordSet pageCount = cmd.Parameters("@pageCount").value recordCount = cmd.Parameters("@recordCount").value if pageCount = 0 then pageCount = 1 if page>pageCount then  response.Redirect("?page="&pageCount)  end if 

set rs = cmd.Execute 

游标使用:

使用游标的顺序:声名游标、打开游标、读取数据、关闭游标、删除游标

CREATE PROCEDURE PK_Test

AS

--声明个变量

declare @O_ID nvarchar(20)  

declare @A_Salary float

--声明一个游标mycursor,

declare mycursor cursor for select O_ID,A_Salary from AddSalary

 

--打开游标

open mycursor

 

--从游标里取出数据(select语句中参数的个数必须要和从游标取出的变量名相同)赋值到我们刚才声明的个变量中

fetch next from mycursor into @O_ID,@A_Salary

 

/*//判断游标的状态

//0 fetch语句成功   

//-1 fetch语句失败或此行不在结果集中   

//-2被提取的行不存在*/ 

 

--循环一次次读取游标,得到@O_ID,@A_Salary的值

while (@@fetch_status=0)

 

--开始读执

begin

 

  --将@O_ID,@A_Salary 当做一个已知量,随便使用。

  --显示出我们每次用游标取出的值

   print '游标成功取出一条数据'

   print @O_ID

   print @A_Salary

 

--用游标去取下一条记录

   fetch next from mycursor into @O_ID,@A_Salary

end

 

 

--关闭游标

close mycursor

--撤销游标

deallocate mycursor

GO



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有